package cn.coisini.model.common.mail.property;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

/**
 * @author xiangshaw
 * Description: 邮件配置类
 */
@ConfigurationProperties(prefix = "spring.mail")
@Data
@Configuration
@Component
public class MailProperties {
    /**
     * 邮件服务器主机名或IP地址（smtp.163.com）
     */
    private String host;
    /**
     * 邮件服务器用户名（coisini_xiang@163.com）
     */
    private String username;
    /**
     * 邮件服务器密码（授权码）
     */
    private String password;
    /**
     * 邮件发件人
     */
    private String from;
    /**
     * 默认编码
     */
    private String defaultEncoding;


    /**
     * 其它配置
     */
    private Other other = new Other();
    @Data
    public static class Other {

        /**
         * SMTP相关配置
         */
        private Smtp smtp = new Smtp();

        @Data
        public static class Smtp {
            /**
             * 是否开启认证（为true，需要提供有效用户名和密码认证）
             */
            private boolean auth;
            /**
             * 邮件服务器端口号（25）
             */
            private String port;
        }
        private StartTls starttls = new StartTls();
        @Data
        public static class StartTls {
            /**
             * 是否开启（为true，发送邮件启用STARTTLS协议加密传输）
             */
            private boolean enable;
            /**
             * 是否强制开启（为true，发送邮件启用STARTTLS协议加密传输，但邮件服务器不支持时，将抛出异常）
             */
            private boolean required;
        }

    }
}
